<?php 

// 用户表模型
class UserModel extends Model{
	// 执行模型操作哪张表
	public $table = 'user';
	// 自动验证
	// create 或 validate 模型方法:创建数据对象，最大的作用是自动获取表单数据并完成一系列的操作和过滤（通过自动验证、自动完成、令牌验证等等）。
	// 两者的区别：validate在Model类里面定义$validate属性，是由多个验证因子组成的二维数组(自我感觉：可以处理复杂一点的验证过程);
	// create方法创建数据对象的时候会自动进行数据验证操作(自我感觉：处理的验证过程要纯粹简单一点);
	public $validate = array(
		// username是表单name名称,nonull不为空,提示信息,2(必须验证)是验证的条件,3(插入与更新,也就是说插入与更新时必须要验证)是验证的时机。
		array('username','nonull','用户名不能为空',2,3),
		array('password','nonull','密码不能为空',2,3),
		array('code','nonull','验证码不能为空',2,3),
	);
	// 登陆验证
	public function login(){
		// create触发自动验证
		if(!$this->create()) return false;
		// 验证码是否正确
		// Q 函数(Q过滤函数：实体化和去掉标签)是对 $_GET、$_POST、$_SESSION、$_REQUEST、$_COOKIE、$_GLOBALS、$_SERVER 等超全局数组操作的函数。
		if(Q('post.code','','strtoupper') !=session('code')){
			// 此处压入错误，就是为了在控制器中调用错误信息
			$this->error = '验证码不正确';
			return false;
		}
		// 验证用户名和密码是否正确
		$username = Q('post.username');
		$password = Q('post.password','','md5');
		// 通过用户名获得数据
		$userInfo = $this->where("username='{$username}'")->find();
		// 用户名信息不存在或者用户提交过来的密码不等于User表里保存的用户信息密码
		if(!$userInfo || $password !=$userInfo['password']){
			$this->error = '用户名或者密码不正确';
			return false;
		}

		// 否则就是输入成功,返回用户信息
		return $userInfo;
	}
}



 ?>